package com.cy2;

import java.util.Scanner;

/**
 * 2022年7月29日练习——方法
 *
 * @author xxx
 * @date 2022/07/29 14:45
 **/
public class J729 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 两个数的方法和
        // int i = sc.nextInt();
        // int i1 = sc.nextInt();
        // int i2 = sc.nextInt();
        // System.out.println("i1+i2的和是：" + sum2(i1, i2));
        // System.out.println("i1+i2+i3的和是：" + sum3(i, sum2(i1, i2)));
        // 求n的阶乘
        // System.out.println("请输入你需要求阶乘的数字：");
        // int c = sc.nextInt();
        // System.out.println(c + "的阶乘是：" + findTheFactorialOfANumber(c));
        // System.out.println(c + "的前" + c + "项阶乘和是：" + findTheFactorialOfANumberSum(c));
        // 求斐波那契数列的第n项。(迭代实现)
        // int f = sc.nextInt();
        // System.out.println("斐波那契数列中底" + f + "是" + fibonacciSequence(f));
        // 测试方法重载(求和+最大值）
        // System.out.println("请输入两个整数：");
        // int i = sc.nextInt();
        // int i1 = sc.nextInt();
        // System.out.println("两个整数中最大值是：" + MaxOfNumbers.max(i, i1));
        // System.out.println("两个整数和：" + "是" + Add.add(i1, i));
        // System.out.println("请输入三个浮点数：");
        // float v = sc.nextFloat();
        // float v1 = sc.nextFloat();
        // float v2 = sc.nextFloat();
        // System.out.println("三个浮点数中最大值是：" + MaxOfNumbers.max(v, v1, v2));
        // System.out.println("三个浮点数的和是" + Add.add(v, v1, v2));
        // c语言作业（oj已做）
        // 课外练习
        // 字符串的截取
        // String s = "chen yong";
        // String substring = s.substring(0, 3);
        // System.out.println(substring);
        // 数组初始化
        // 基本数据类型必须使用包装类
        //
        String S = "CHEN";


    }

    private static int fibonacciSequence(int f) {
        if (f <= 2) {
            return f;
        } else {
            return fibonacciSequence(f - 1) + fibonacciSequence(f - 2);
        }
    }

    private static int findTheFactorialOfANumberSum(int c) {
        int sum = 0;
        for (int i = 1; i <= c; i++) {
            sum += findTheFactorialOfANumber(i);
        }
        return sum;
    }

    private static int findTheFactorialOfANumber(int c) {
        int ret = 1;
        for (int i = 1; i <= c; i++) {
            ret *= i;
        }
        return ret;
    }

    private static int sum3(int i, int sum2) {
        return i + sum2;
    }

    private static int sum2(int i1, int i2) {
        return i1 + i2;
    }
}

class Add {
    static int add(int a, int b) {
        return a + b;
    }

    static double add(double a, double b, double c) {
        return a + b + c;
    }
}

class MaxOfNumbers {
    static int max(int a, int b) {
        return a > b ? a : b;
    }

    static double max(double a, double b, double c) {
        double tmp = a > b ? a : b;
        double max = tmp > c ? tmp : c;
        return max;
    }
}
